//package com.qzdatasoft.mcp.server.tool;
//
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.ai.tool.function.FunctionToolCallback;
//import org.springframework.context.annotation.Configuration;
//
//import java.time.LocalDateTime;
//import java.util.function.Function;
//
///**
// * @author fangjie
// */
//@Slf4j
//@Configuration
//public class DynamicMcpToolProvider {
//
////    /**
////     *  注册工具第一种方式
////     *
////     * @param myTools
////     * @return
////     */
////     @Bean
////     public ToolCallbackProvider tools(MyTools myTools) {
////         return MethodToolCallbackProvider.builder().toolObjects(myTools).build();
////     }
////
////    /**
////     * 注册工具第二种方式
////     * @return
////     */
////     @Bean
////     public ToolCallbackProvider tools() {
////         return ToolCallbackProvider.from(
////                 FunctionToolCallback.builder("toUpperCase", (Function<ToUpperCaseInput, String>) input -> input.input().toUpperCase())
////                         .description("convert string to uppercase")
////                         .inputType(ToUpperCaseInput.class)
////                         .build()
////         );
////     }
////
////    /**
////     * 注册工具第三种方式
////     *
////     * @return
////     */
////     @Bean
////     public List<ToolCallback> tools() {
////         return List.of(
////                 FunctionToolCallback.builder("toUpperCase", (Function<ToUpperCaseInput, String>) input -> input.input().toUpperCase())
////                         .description("convert string to uppercase")
////                         .inputType(ToUpperCaseInput.class)
////                         .build()
////         );
////     }
////
////    /**
////     * 注册工具
////     *
////     * @param toolCallbacks 工具缓存
////     * @return 工具列表
////     */
////    @Bean
////    public List<ToolCallback> dynamicTool(@Autowired List<ToolCallback> toolCallbacks/* MyTools myTools*/) {
////
////        log.info("init dynamic tool toUpperCase at {}", LocalDateTime.now());
////        // 将 MyTools 转换成 ToolCallback
////        //List<ToolCallback> toolCallbacks = new java.util.ArrayList<>(List.of(ToolCallbacks.from(myTools)));
////
////        // 向 toolCallbacks 增加一个 toUpperCase 方法
////        FunctionToolCallback<ToUpperCaseInput, String> upperCaseTool =
////                FunctionToolCallback.builder("toUpperCase", (Function<ToUpperCaseInput, String>) input -> input.input().toUpperCase())
////                        .description("Convert string to uppercase")
////                        .inputType(ToUpperCaseInput.class)
////                        .build();
////        toolCallbacks.add(upperCaseTool);
////
////        return toolCallbacks;
////    }
//
//    public record ToUpperCaseInput(String input) {
//    }
//
//    static {
//        // 向 toolCallbacks 动态增加一个 toUpperCase 方法
//        FunctionToolCallback<ToUpperCaseInput, String> upperCaseTool =
//                FunctionToolCallback.builder("toUpperCase", (Function<ToUpperCaseInput, String>) input -> input.input().toUpperCase())
//                        .description("Convert string to uppercase")
//                        .inputType(ToUpperCaseInput.class)
//                        .build();
//        McpFactory.getToolCallbackList().add(upperCaseTool);
//
//        log.info("initialized dynamic tool toUpperCase at {}", LocalDateTime.now());
//    }
//
//}
